###类的封装

class Person:
    def __init__(self,name,age,sex,weight):
        #普通属性
        self.name = name
        self.age = age
        #受保护的属性
        self._sex = sex
        #私有属性
        self.__weight = weight
    def intro(self):
        print(f"我叫{self.name}今年{self.age}岁")

    def get_sex(self):
        print(f"我的性别是{self._sex}")

    def get_weight(self):
        print(f"我的体重是{self.__weight}kg")

    def set_sex(self,sex):
        #通过验证方可修改体重
        if(sex in ['男','女']):
            self._sex = sex
        else:
            print('*****性别修改失败')
    #静态方法：验证密码
    @staticmethod
    def validation(psd):
        if(psd == '123456'):
            return True
        else:
            return False
    
    def set_weight(self,weight,password):
        #通过验证方可修改体重
        if(self.validation(password) & isinstance(weight,int)):
            self.__weight = weight
        else:
            print('*****修改体重失败')

p1 = Person('Sherlock',30,'男',70)
#访问普通属性
print(p1.name,p1.age)
#访问受保护的属性（不建议）
# print(p1._sex)
#访问私有属性（报错）
# print(p1.__weight)

#通过提供的接口访问受保护和私有的属性
p1.get_sex()
p1.get_weight()

#修改性别
p1.set_sex('女')
p1.get_sex()

#修改体重
p1.set_weight(65,'123456')
p1.get_weight()